package com.copd.service;

import com.copd.dto.BackupDataQueryRequest;
import java.util.Map;

/**
 * 备份数据服务接口
 */
public interface BackupDataService {
    /**
     * 查询备份数据
     * @param request 查询条件
     * @param doctorId 医生ID
     * @return 备份数据列表和总数
     */
    Map<String, Object> queryBackupData(BackupDataQueryRequest request, Integer doctorId);

    /**
     * 获取备份表信息
     * @param doctorId 医生ID
     * @return 备份表信息（包含表名、描述等）
     */
    Map<String, Object> getBackupTablesInfo(Integer doctorId);
    
    /**
     * 获取患者信息
     * @param patientId 患者ID
     * @return 患者基本信息
     */
    Map<String, Object> getPatientInfo(Integer patientId);
    
    /**
     * 获取医生信息
     * @param doctorId 医生ID
     * @return 医生基本信息
     */
    Map<String, Object> getDoctorInfo(Integer doctorId);
    
    /**
     * 获取备份操作日志
     * @param doctorId 医生ID (可选)
     * @param patientId 患者ID (可选)
     * @param tableName 表名 (可选)
     * @param operationType 操作类型 (可选，如 "INSERT", "UPDATE", "DELETE")
     * @param startTime 开始时间 (可选)
     * @param endTime 结束时间 (可选)
     * @param page 页码
     * @param size 每页大小
     * @return 操作日志记录及统计信息
     */
    Map<String, Object> getBackupOperationLogs(Integer doctorId, Integer patientId, String tableName, 
                                             String operationType, String startTime, String endTime, 
                                             Integer page, Integer size);
                                             
    /**
     * 获取患者的详细备份信息，包括所有备份表的数据摘要
     * @param patientId 患者ID
     * @param doctorId 医生ID (可选)
     * @return 患者的详细备份信息（包括所有备份表的最新记录和数据统计）
     */
    Map<String, Object> getDetailedPatientBackupInfo(Integer patientId, Integer doctorId);
    
    /**
     * 获取患者在所有备份表中的原始数据
     * @param patientId 患者ID
     * @return 各备份表患者数据的映射（表名 -> 数据列表）
     */
    Map<String, Object> getPatientRawBackupData(Integer patientId);
} 